/*******************************************
  Jose Andres Lara Vecino

  Author       : $Author: cainlara@gmail.com $
  Last CheckIn : $Date: 2012-06-08 22:55:19 +0000 (Fri, 08 Jun 2012) $
  Revision     : $Revision: 80 $
*******************************************/

package gui;

import gui.proyecto.ProyectosPanel;
import gui.suites.SuitesPanel;
import gui.usuario.UsuariosPanel;

import java.awt.BorderLayout;

import javax.swing.JPanel;

/**
 * Contenedor de toda la informacion mostrada en la ventana principal.
 * 
 * @author jose.lara 06.06.2012
 */
public class PanelPrincipal extends JPanel {
    private static final long serialVersionUID  = 8856242291510901338L;
    
    public static final int OPCION_DEFAULT      = 0;
    public static final int OPCION_PROYECTOS    = 1;
    public static final int OPCION_SUITS        = 2;
    public static final int OPCION_USUARIOS     = 3;
    
    private UsuarioIdPanel usuarioPanel         = null;
    private ProyectosPanel proyectosPanel       = null;
    private SuitesPanel suitesPanel             = null;
    private UsuariosPanel usuariosPanel         = null;
    
    private int opcionActual                    = OPCION_DEFAULT;
    
    public PanelPrincipal() {
        super();
        setLayout(new BorderLayout());
    }
    
    private UsuarioIdPanel getUsuarioPanel() {
        if(usuarioPanel == null) {
            usuarioPanel = new UsuarioIdPanel();
        }
        return usuarioPanel;
    }
    
    private ProyectosPanel getProyectosPanel() {
        if(proyectosPanel == null) {
            proyectosPanel = new ProyectosPanel();
        }
        
        return proyectosPanel;
    }
    
    private SuitesPanel getSuitesPanel() {
        if(suitesPanel == null) {
            suitesPanel = new SuitesPanel();
        }
        
        return suitesPanel;
    }
    
    private UsuariosPanel getUsuariosPanel() {
        if(usuariosPanel == null) {
            usuariosPanel = new UsuariosPanel();
        }
        
        return usuariosPanel;
    }
    
    protected int getOpcionActual() {
        return opcionActual;
    }
    
    public void setOpcionActual(int opcionActual) {
        this.opcionActual = opcionActual;
    }
    
    @Override
    public void repaint() {
        removeAll();
        if(getOpcionActual() != OPCION_DEFAULT) {
            add(getUsuarioPanel(), BorderLayout.NORTH);
        }
        
        switch(getOpcionActual()) {
            case OPCION_PROYECTOS:
                add(getProyectosPanel(), BorderLayout.CENTER);
                break;
            case OPCION_SUITS:
                add(getSuitesPanel(), BorderLayout.CENTER);
                break;
            case OPCION_USUARIOS:
                add(getUsuariosPanel(), BorderLayout.CENTER);
                break;
            default:
                break;
        }
        
        super.repaint();
    }
    
    public void cargarOpcion(int opcion) {
        if(opcion != getOpcionActual()) {
            setOpcionActual(opcion);
            repaint();
            revalidate();
        }
    }
}